Aggregation Framework

Database Tutorials - মঙ্গোডিবি (MongoDB) MongoDB Query Language (MQL) |
140
140

MongoDB তে Aggregation Framework একটি শক্তিশালী এবং নমনীয় পদ্ধতি, যা ডেটার উপর বিভিন্ন প্রক্রিয়া সম্পাদন করতে ব্যবহৃত হয়। এটি ডেটাবেসের ডেটা বিশ্লেষণ, পরিবর্তন, গ্রুপিং, সোর্টিং, ফিল্টারিং এবং অন্যান্য অনেক ধরনের জটিল অপারেশন করতে সক্ষম। Aggregation Framework MongoDB তে একাধিক ডকুমেন্ট থেকে প্রয়োজনীয় তথ্য সংগ্রহ এবং কাস্টমাইজড ফলাফল তৈরি করার জন্য ব্যবহৃত হয়।


Aggregation Pipeline

MongoDB তে Aggregation পিপলাইন হলো এমন একটি প্রযুক্তি, যা একাধিক স্টেপ বা অপারেশনকে একসাথে প্রসেস করার জন্য ব্যবহৃত হয়। এটি SQL তে GROUP BY, JOIN, HAVING এর মতো কার্যাবলীর সমান।

  • Pipelines বা "পিপলাইন" একাধিক অ্যাগ্রিগেশন স্টেপের সমষ্টি, যেগুলি একটি নির্দিষ্ট আদেশে একে অপরের উপর কাজ করে।
  • MongoDB তে একটি পিপলাইন সাধারণত একটি অর্ডার অনুসরণ করে, যেখানে প্রতিটি স্টেপ পরবর্তী স্টেপের আউটপুটকে ইনপুট হিসেবে গ্রহণ করে।

Basic Structure of an Aggregation Pipeline:

db.collection.aggregate([
  { $match: { field: value } },      // 1st stage
  { $group: { _id: "$field", total: { $sum: 1 } } },  // 2nd stage
  { $sort: { total: -1 } }           // 3rd stage
])

Aggregation Operators

MongoDB তে Aggregation Framework বিভিন্ন ধরনের অপারেটর প্রদান করে, যা ডেটা প্রসেসিংয়ের বিভিন্ন কাজ সহজ করে তোলে। কিছু প্রধান Aggregation Operators:

1. $match

$match অপারেটর MongoDB তে ডেটা ফিল্টার করার জন্য ব্যবহৃত হয়, যেমন SQL তে WHERE ক্লজ। এটি একটি কন্ডিশনাল ফিল্টার হিসেবে কাজ করে।

উদাহরণ:

db.orders.aggregate([
  { $match: { status: "completed" } }
])

এটি সমস্ত "completed" স্ট্যাটাসের অর্ডার ফেরত দেবে।

2. $group

$group অপারেটর MongoDB তে ডেটা গ্রুপ করতে ব্যবহৃত হয়, যেমন SQL তে GROUP BY। এটি এক বা একাধিক ফিল্ডের ভিত্তিতে গ্রুপ করে, এবং গ্রুপ করা ডেটার উপর অ্যাগ্রিগেট ফাংশন (যেমন, sum, avg, min, max) প্রয়োগ করতে সাহায্য করে।

উদাহরণ:

db.sales.aggregate([
  { $group: { _id: "$product", totalSales: { $sum: "$amount" } } }
])

এটি প্রতিটি পণ্যের মোট বিক্রয় পরিমাণ গণনা করবে।

3. $project

$project অপারেটর MongoDB তে ডেটার কাঠামো পরিবর্তন করতে ব্যবহৃত হয়। এটি ডেটার কিছু ফিল্ডকে অন্তর্ভুক্ত বা বাদ দিতে পারে এবং নতুন ফিল্ডও তৈরি করতে পারে।

উদাহরণ:

db.orders.aggregate([
  { $project: { _id: 0, orderId: 1, customerName: 1 } }
])

এটি শুধুমাত্র orderId এবং customerName ফিল্ডগুলো সহ ডকুমেন্ট ফেরত দিবে এবং _id ফিল্ডটি বাদ দেবে।

4. $sort

$sort অপারেটর MongoDB তে ডেটা সাজানোর জন্য ব্যবহৃত হয়, যেমন SQL তে ORDER BY

উদাহরণ:

db.orders.aggregate([
  { $sort: { orderDate: -1 } }
])

এটি ডেটা orderDate এর মাধ্যমে DESCENDING অর্ডারে সাজাবে।

5. $limit

$limit অপারেটর MongoDB তে ডেটার পরিমাণ সীমাবদ্ধ করার জন্য ব্যবহৃত হয়। এটি সাধারণত বৃহৎ ডেটাসেট থেকে একটি নির্দিষ্ট সংখ্যক ডকুমেন্ট ফেরত দিতে ব্যবহৃত হয়।

উদাহরণ:

db.orders.aggregate([
  { $limit: 5 }
])

এটি প্রথম 5টি ডকুমেন্ট ফিরিয়ে দিবে।

6. $skip

$skip অপারেটর MongoDB তে ডেটা থেকে কিছু ডকুমেন্ট বাদ দেয়ার জন্য ব্যবহৃত হয়। এটি offset এর মতো কাজ করে।

উদাহরণ:

db.orders.aggregate([
  { $skip: 10 }
])

এটি প্রথম 10টি ডকুমেন্ট বাদ দিয়ে বাকি ডকুমেন্টগুলো ফিরিয়ে দেবে।

7. $unwind

$unwind অপারেটর MongoDB তে একটি অ্যারে ফিল্ডের উপর কাজ করে। এটি একটি অ্যারের প্রতিটি উপাদানকে আলাদা আলাদা ডকুমেন্টে বিভক্ত করে।

উদাহরণ:

db.orders.aggregate([
  { $unwind: "$items" }
])

এটি items নামক অ্যারে ফিল্ডে প্রতিটি আইটেমকে একটি পৃথক ডকুমেন্টে রূপান্তর করবে।


Aggregation Example

এখানে একটি MongoDB অ্যাগ্রিগেশন পিপলাইন উদাহরণ দেওয়া হলো, যেখানে ডেটাকে ফিল্টার, গ্রুপ এবং সাজানো হয়েছে:

db.orders.aggregate([
  { $match: { status: "completed" } },  // Filter orders with status "completed"
  { $group: { _id: "$customerId", totalAmount: { $sum: "$amount" } } },  // Group by customerId and calculate total amount
  { $sort: { totalAmount: -1 } },  // Sort by totalAmount in descending order
  { $limit: 5 }  // Get top 5 customers with the highest totalAmount
])

এটি সমস্ত "completed" স্ট্যাটাসের অর্ডারগুলো ফিল্টার করবে, গ্রুপ করবে customerId এর ভিত্তিতে এবং মোট অর্ডারের পরিমাণ গণনা করবে, তারপর মোট পরিমাণের উপর ভিত্তি করে সেগুলো সাজাবে এবং সর্বোচ্চ ৫টি গ্রাহক দেখাবে।


সারাংশ

MongoDB এর Aggregation Framework একটি শক্তিশালী টুল যা ডেটার উপর বিভিন্ন প্রক্রিয়া সম্পাদন করতে ব্যবহৃত হয়। এটি MongoDB ডেটাবেসে ডেটাকে গ্রুপ, ফিল্টার, সোর্ট, এবং অ্যাগ্রিগেশন অপারেশন করতে সাহায্য করে। Aggregation Pipeline এর মাধ্যমে একাধিক স্টেপে ডেটা প্রসেস করা সম্ভব এবং MongoDB ডেটাবেসের জটিল কুয়েরি অপারেশন কার্যকরভাবে পরিচালনা করা যায়। MongoDB তে বিভিন্ন Aggregation Operators যেমন $match, $group, $project, $sort ইত্যাদি ডেটা প্রসেসিংয়ের জন্য ব্যবহৃত হয়, যা ডেটাবেস ম্যানেজমেন্ট এবং ডেটা বিশ্লেষণে অত্যন্ত কার্যকর।

Content added By
Promotion